#ifndef _PELOADER_H_
#define _PELOADER_H_

#include "PEFile.h"
#include "PEArchive.h"

namespace pe
{

	class PEImage;

	class PE_DLL_EXPORT PELoader
	{
	
	public:
	
		PELoader();
		~PELoader();
	
		int CheckFileType(char** a_Dst, PEStream* a_Stream);
		virtual int CheckArchive(char** a_Dst, PEStream* a_Stream);
		virtual int CheckImage(char** a_Dst, PEStream* a_Stream);
		virtual int CheckModel(char** a_Dst, PEStream* a_Stream);

		virtual PEImage* CheckImage(PEStream* a_Stream);

		virtual int LoadRawArchive(PEArchiveRaw& a_Dst, PEStream* a_Stream) = 0;
		virtual int LoadRawImage(PEImageRaw& a_Dst, PEStream* a_Stream) = 0;
		virtual int LoadRawModel(PEModelRaw& a_Dst, PEStream* a_Stream) = 0;
	
	}; // class PELoader

}; // namespace pe
	
#endif